#ifndef __KAART_VOORUIT_H__
#define __KAART_VOORUIT_H__

#include "Kaart.h"
#include "Spel.h"
#include "Robot.h"
//! De "1,2,3-stappen vooruit"-kaarten

class KaartVooruit : public Kaart
{
public:
	KaartVooruit(int aantal){m_aantal = aantal;}

	void bestuurRobot(Robot* robot, Spel* spel)
	{
		int backupAantal = m_aantal;
		while(backupAantal > 0 )
		{
			Positie voor = robot->voor();
			Robot* bezetter = spel->getBezetter( voor.x, voor.y );
			if( bezetter == NULL || duwRobot(bezetter, robot->getRotatie(), spel ) )
			{
				const Vakje* vak = spel->getMap()->getVakje(voor.x, voor.y);
				if( vak == NULL )
					spel->destroy( robot );
				else if( !vak->isObstakel() )
				{
					robot->setPositie( voor.x, voor.y );
					vak->pasSchadeAan( robot );
				}
			}
			backupAantal--;
		}
	}

	void project(Robot* robot, const Spel* spel) const
	{
		int backupAantal = m_aantal;
		while(backupAantal > 0 )
		{
			Positie voor = robot->voor();
			const Vakje* vak = spel->getMap().getVakje(voor.x, voor.y);
			if( vak == NULL )
				robot->setSchade(9);
			else if( !vak->isObstakel() )
			{
				robot->setPositie( voor.x, voor.y );
				vak->pasSchadeAan( robot );
			}
			else 
				return; // als er 1 keer een obstacle is, dan is het de volgende keer ook he
			backupAantal--;
		}
	}
private:
	int m_aantal;
};

#endif
